/*****************************************************************************
*        描述 :
*             文件描述
*        CLR版本:            3.5
*        创建者 :            蒋 光
*        个人域名:           jiangguang.net.cn
*        命名空间名称:       ECP.Interface
*        文件名:             IUserService.cs
*        创建系统时间:       2012/11/2 19:07:02
*        创建年份:           2012
*
/*****************************************************************************/

namespace ECP.Interface
{
    using System.Data;
    using System.ServiceModel;
    using ECP.Utilities;

    [ServiceContract(Namespace = "http://jiangguang.net.cn/"), XmlSerializerFormat]
    public interface IUserService
    {
        [OperationContract]
        string AddUser(BaseUserInfo userInfo, string company, string department, string workgroup, string userName, string realname, string code, string role, string password, string email, bool enabled, string description, out string statusCode, out string statusMessage);

        [OperationContract]
        int AddUserToRole(BaseUserInfo userInfo, string userID, string[] addToRoleIDs);

        [OperationContract]
        int BatchDelete(BaseUserInfo userInfo, string[] ids);

        [OperationContract]
        int Delete(BaseUserInfo userInfo, string id);

        [OperationContract]
        DataTable Get(BaseUserInfo userInfo, string id);

        [OperationContract]
        DataTable GetDT(BaseUserInfo userInfo);

        [OperationContract]
        DataTable GetDTByIDs(BaseUserInfo userInfo, string[] ids);

        [OperationContract]
        DataTable GetRole(BaseUserInfo userInfo);

        [OperationContract]
        string[] GetUserRoleIDs(BaseUserInfo userInfo, string userID);

        [OperationContract]
        void Load();

        [OperationContract]
        int RemoveUserFromRole(BaseUserInfo userInfo, string userID, string[] removeRoleIDs);

        [OperationContract]
        DataTable Search(BaseUserInfo userInfo, string userName, string auditStates, string role);

        [OperationContract]
        int SetDefaultRole(BaseUserInfo userInfo, string userID, string roleID);

        [OperationContract]
        int SetUserAuditStates(BaseUserInfo userInfo, string[] ids, AuditStatus auditStatus);

        [OperationContract]
        int UpdateUser(BaseUserInfo userInfo, string id, string userName, string realname, string code, string role, bool enabled, out string statusCode, out string statusMessage);

        [OperationContract]
        string HelloMessage(string userName);
    }
}